// SPDX-License-Identifier: GPL-2.0+
// Copyright (c) 2018 Facebook Inc.
// Author: Vijay Khemka <vijaykhemka@fb.com>
/dts-v1/;

#include "aspeed-g5.dtsi"
#include <dt-bindings/gpio/aspeed-gpio.h>

/ {
	model = "Facebook TiogaPass BMC";
	compatible = "facebook,tiogapass-bmc", "aspeed,ast2500";
	aliases {
		serial0 = &uart1;
		serial4 = &uart5;

		/*
		 * Hardcode the bus number of i2c switches' channels to
		 * avoid breaking the legacy applications.
		 */
		i2c16 = &imux16;
		i2c17 = &imux17;
		i2c18 = &imux18;
		i2c19 = &imux19;
		i2c20 = &imux20;
		i2c21 = &imux21;
		i2c22 = &imux22;
		i2c23 = &imux23;
		i2c24 = &imux24;
		i2c25 = &imux25;
		i2c26 = &imux26;
		i2c27 = &imux27;
		i2c28 = &imux28;
		i2c29 = &imux29;
		i2c30 = &imux30;
		i2c31 = &imux31;
	};
	chosen {
		stdout-path = &uart5;
		bootargs = "console=ttyS4,115200 earlyprintk";
	};

	memory@80000000 {
		reg = <0x80000000 0x20000000>;
	};

	iio-hwmon {
		compatible = "iio-hwmon";
		io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
			      <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>;
	};

};

&fmc {
	status = "okay";
	flash@0 {
		status = "okay";
		m25p,fast-read;
#include "openbmc-flash-layout.dtsi"
	};
};

&spi1 {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_spi1_default>;
	flash@0 {
		status = "okay";
		m25p,fast-read;
		label = "pnor";
	};
};

&lpc_snoop {
	status = "okay";
	snoop-ports = <0x80>;
};

&lpc_ctrl {
	// Enable lpc clock
	status = "okay";
};

&uart1 {
	// Host Console
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_txd1_default
		     &pinctrl_rxd1_default>;
};

&uart2 {
	// SoL Host Console
	status = "okay";
};

&uart3 {
	// SoL BMC Console
	status = "okay";
};

&uart5 {
	// BMC Console
	status = "okay";
};

&kcs2 {
	// BMC KCS channel 2
	status = "okay";
	kcs_addr = <0xca8>;
};

&kcs3 {
	// BMC KCS channel 3
	status = "okay";
	kcs_addr = <0xca2>;
};

&mac0 {
	status = "okay";

	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_rmii1_default>;
	use-ncsi;
};

&adc {
	status = "okay";
};

&i2c0 {
	status = "okay";
	//Airmax Conn B, CPU0 PIROM, CPU1 PIROM
};

&i2c1 {
	status = "okay";
	//X24 Riser
	i2c-switch@71 {
		compatible = "nxp,pca9544";
		#address-cells = <1>;
		#size-cells = <0>;
		reg = <0x71>;

		imux16: i2c@0 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <0>;

			ina230@45 {
				compatible = "ti,ina230";
				reg = <0x45>;
			};

			tmp75@48 {
				compatible = "ti,tmp75";
				reg = <0x48>;
			};

			tmp421@49 {
				compatible = "ti,tmp75";
				reg = <0x49>;
			};

			eeprom@50 {
				compatible = "atmel,24c64";
				reg = <0x50>;
				pagesize = <32>;
			};

			i2c-switch@73 {
				compatible = "nxp,pca9546";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0x73>;

				imux20: i2c@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;
				};

				imux21: i2c@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
				};

				imux22: i2c@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
				};

				imux23: i2c@3 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <3>;
				};

			};

		};

		imux17: i2c@1 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <1>;

			ina230@45 {
				compatible = "ti,ina230";
				reg = <0x45>;
			};

			tmp421@48 {
				compatible = "ti,tmp75";
				reg = <0x48>;
			};

			tmp421@49 {
				compatible = "ti,tmp75";
				reg = <0x49>;
			};

			eeprom@50 {
				compatible = "atmel,24c64";
				reg = <0x50>;
				pagesize = <32>;
			};

			i2c-switch@73 {
				compatible = "nxp,pca9546";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0x73>;

				imux24: i2c@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;
				};

				imux25: i2c@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
				};

				imux26: i2c@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
				};

				imux27: i2c@3 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <3>;
				};

			};

		};

		imux18: i2c@2 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <2>;

			ina230@45 {
				compatible = "ti,ina230";
				reg = <0x45>;
			};

			tmp421@48 {
				compatible = "ti,tmp75";
				reg = <0x48>;
			};

			tmp421@49 {
				compatible = "ti,tmp75";
				reg = <0x49>;
			};

			eeprom@50 {
				compatible = "atmel,24c64";
				reg = <0x50>;
				pagesize = <32>;
			};

			i2c-switch@73 {
				compatible = "nxp,pca9546";
				#address-cells = <1>;
				#size-cells = <0>;
				reg = <0x73>;

				imux28: i2c@0 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <0>;
				};

				imux29: i2c@1 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <1>;
				};

				imux30: i2c@2 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <2>;
				};

				imux31: i2c@3 {
					#address-cells = <1>;
					#size-cells = <0>;
					reg = <3>;
				};

			};

		};

		imux19: i2c@3 {
			#address-cells = <1>;
			#size-cells = <0>;
			reg = <3>;

			i2c-switch@40 {
				compatible = "ti,ina230";
				reg = <0x40>;
			};

			i2c-switch@41 {
				compatible = "ti,ina230";
				reg = <0x41>;
			};

			i2c-switch@45 {
				compatible = "ti,ina230";
				reg = <0x45>;
			};

		};

	};
};

&i2c2 {
	status = "okay";
	// Mezz Management SMBus
};

&i2c3 {
	status = "okay";
	// SMBus to Board ID EEPROM
};

&i2c4 {
	status = "okay";
	// BMC Debug Header
};

&i2c5 {
	status = "okay";
	// CPU Voltage regulators
	regulator@48 {
		compatible = "infineon,pxe1610";
		reg = <0x48>;
	};
	regulator@4a {
		compatible = "infineon,pxe1610";
		reg = <0x4a>;
	};
	regulator@50 {
		compatible = "infineon,pxe1610";
		reg = <0x50>;
	};
	regulator@52 {
		compatible = "infineon,pxe1610";
		reg = <0x52>;
	};
	regulator@58 {
		compatible = "infineon,pxe1610";
		reg = <0x58>;
	};
	regulator@5a {
		compatible = "infineon,pxe1610";
		reg = <0x5a>;
	};
	regulator@68 {
		compatible = "infineon,pxe1610";
		reg = <0x68>;
	};
	regulator@70 {
		compatible = "infineon,pxe1610";
		reg = <0x70>;
	};
	regulator@72 {
		compatible = "infineon,pxe1610";
		reg = <0x72>;
	};
};

&i2c6 {
	status = "okay";
	tpm@20 {
		compatible = "infineon,slb9645tt";
		reg = <0x20>;
	};
	tmp421@4e {
		compatible = "ti,tmp421";
		reg = <0x4e>;
	};
	tmp421@4f {
		compatible = "ti,tmp421";
		reg = <0x4f>;
	};
	eeprom@54 {
		compatible = "atmel,24c64";
		reg = <0x54>;
		pagesize = <32>;
	};
};

&i2c7 {
	status = "okay";
	//HSC, AirMax Conn A
};

&i2c8 {
	status = "okay";
	tmp421@1f {
		compatible = "ti,tmp421";
		reg = <0x1f>;
	};
	//Mezz Sensor SMBus
};

&i2c9 {
	status = "okay";
	//USB Debug Connector
};

&pwm_tacho {
	status = "okay";
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
	fan@0 {
		reg = <0x00>;
		aspeed,fan-tach-ch = /bits/ 8 <0x00>;
	};

	fan@1 {
		reg = <0x01>;
		aspeed,fan-tach-ch = /bits/ 8 <0x02>;
	};
};
